<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Video game programming</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Video_game_programming"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Video_game_programming rootpage-Video_game_programming skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Video game programming</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">This article is about programming video games. For a broader overview of the subject, see <a href="Video_game_development" title="Video game development">video game development</a>.</div>
<style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1246091330">
/* start https://en.wikipedia.org/ */
.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:640px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}body.skin--responsive .mw-parser-output .sidebar a>img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><table class="sidebar sidebar-collapse nomobile nowraplinks hlist"><tbody><tr><td class="sidebar-top-image"><span typeof="mw:File"></span></td></tr><tr><td class="sidebar-pretitle-with-top-image">Part of a series on the</td></tr><tr><th class="sidebar-title-with-pretitle"><a href="Video_game_industry" title="Video game industry">Video game industry</a></th></tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)"><a href="Video_game_development" title="Video game development">Development</a></div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="Video_game_producer" title="Video game producer">Producer</a></li>
<li><a href="Video_game_developer" title="Video game developer">Developer</a><br>
<ul><li><a href="Video_game_design#Game_designer" title="Video game design">Designer</a></li>
<li><a href="Game_art_design#Video_game_artist" title="Game art design">Artist</a></li>
<li><a href="Video_game_programmer" title="Video game programmer">Programmer</a></li></ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Video_game_design" title="Video game design">Design</a>
<ul><li><a href="Level_(video_games)#Level_design" title="Level (video games)">Level design</a></li></ul></li>
<li>
<ul><li><a href="Game_engine" title="Game engine">Engine</a></li>
<li><a href="Artificial_intelligence_in_video_games" title="Artificial intelligence in video games">AI</a></li>
<li><a href="Game_creation_system" title="Game creation system">Creation system</a></li></ul></li>
<li><a href="Video_game_graphics" title="Video game graphics">Graphics</a></li>
<li><a href="Video_game_music" title="Video game music">Music</a></li>
<li><a href="Game_testing" title="Game testing">Testing</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Products</div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="Video_game" title="Video game">Video game</a>
<ul><li><i>Specialized / alternative-paradigmatic types</i>: <a href="Casual_game" title="Casual game">Casual</a></li>
<li><a href="Sex_and_nudity_in_video_games" class="mw-redirect" title="Sex and nudity in video games">Erotic</a></li>
<li><a href="Indie_game" title="Indie game">Indie</a></li>
<li><a href="Interactive_movie" class="mw-redirect" title="Interactive movie">Interactive movie</a></li>
<li><a href="Nonviolent_video_game" title="Nonviolent video game">Nonviolent</a></li>
<li><a href="Serious_game" title="Serious game">Serious</a>
<ul><li><a href="Art_game" title="Art game">Art game</a></li>
<li><a href="Educational_video_game" title="Educational video game">Edugame</a></li>
<li><a href="Exergaming" class="mw-redirect" title="Exergaming">Exergame</a></li></ul></li>
<li><a href="Non-game" title="Non-game">Non-game</a></li></ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Arcade_video_game" title="Arcade video game">Arcade cabinet</a></li>
<li><a href="Video_game_console" title="Video game console">Console</a>
<ul><li><a href="Video_game_accessory" title="Video game accessory">Accessory</a></li></ul></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)"><a href="Video_game_publishing" class="mw-redirect" title="Video game publishing">Publishing</a></div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="List_of_video_games_markets_by_country" class="mw-redirect" title="List of video games markets by country">Markets</a>
<ul><li><a href="Video_games_in_China" title="Video games in China">China</a></li>
<li><a href="Video_games_in_the_United_States" title="Video games in the United States">U.S.</a></li>
<li><a href="Video_games_in_Japan" title="Video games in Japan">Japan</a></li>
<li><a href="Video_games_in_North_Korea" title="Video games in North Korea">North Korea</a></li>
<li><a href="Video_games_in_South_Korea" title="Video games in South Korea">South Korea</a></li></ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Video_game_localization" title="Video game localization">Localization</a></li>
<li><a href="Video_game_censorship" title="Video game censorship">Censorship</a>
<ul><li><a href="Video_game_content_rating_system" title="Video game content rating system">Content rating</a></li></ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Video_game_piracy" title="Video game piracy">Piracy</a></li>
<li><a href="Video_game_clone" title="Video game clone">Clone</a></li>
<li><a href="Intellectual_property_protection_of_video_games" title="Intellectual property protection of video games">Intellectual property protection</a>
<ul><li><a href="Digital_rights_management" title="Digital rights management">Digital rights management</a></li>
<li><a href="Copy_protection" title="Copy protection">Copy protection</a></li></ul></li></ul>
<hr style="height:0px"></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)"><a href="Digital_distribution_of_video_games" title="Digital distribution of video games">Distribution</a> and <a href="Video_game_monetization" title="Video game monetization">monetization</a></div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="Buy-to-play" title="Buy-to-play">Buy-to-play</a>
<ul><li><a href="AAA_(video_game_industry)" title="AAA (video game industry)">AAA game</a></li>
<li><a href="Expansion_pack" title="Expansion pack">Expansion pack</a></li>
<li><a href="Episodic_video_game" title="Episodic video game">Episodic video game</a></li></ul></li>
<li><a href="Early_access" title="Early access">Early access</a></li>
<li><a href="Crowdfunding_in_video_games" title="Crowdfunding in video games">Crowdfunding</a></li>
<li><a href="Downloadable_content" title="Downloadable content">Downloadable content</a></li></ul>
<hr style="height:0px">
<ul><li><a href="Live_service_game" title="Live service game">Live service game</a>
<ul><li><a href="Cloud_gaming" title="Cloud gaming">Cloud gaming</a></li></ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Free-to-play" title="Free-to-play">Free-to-play</a></li>
<li><a href="Microtransactions" class="mw-redirect" title="Microtransactions">Microtransactions</a>
<ul><li><a href="In-game_currency" class="mw-redirect" title="In-game currency">In-game currency</a></li></ul></li>
<li><a href="Loot_box" title="Loot box">Loot box</a>
<ul><li><a href="Gacha_game" title="Gacha game">gacha</a></li></ul></li>
<li><a href="Season_pass_(video_games)" title="Season pass (video games)">Season pass</a>
<ul><li><a href="Battle_pass" title="Battle pass">Battle pass</a></li></ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Advertising_in_video_games" title="Advertising in video games">Advertising in video games</a><br>
<ul><li><a href="In-game_advertising" title="In-game advertising">in-game</a></li>
<li><a href="Advergame" title="Advergame">Advergame</a></li></ul></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Related</div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="Game_studies" title="Game studies">Game studies</a></li>
<li><a href="Video_game_journalism" title="Video game journalism">Game journalism</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Lists</div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="List_of_video_game_developers" title="List of video game developers">List of video game developers</a>
<ul><li><a href="List_of_indie_game_developers" title="List of indie game developers">Indie</a></li></ul></li>
<li><a href="List_of_video_game_publishers" title="List of video game publishers">List of video game publishers</a></li>
<li><a href="List_of_video_game_industry_people" title="List of video game industry people">List of video game industry people</a></li>
<li><a href="List_of_video_game_websites" title="List of video game websites">List of video game websites</a></li>
<li><a href="List_of_video_game_magazines" title="List of video game magazines">List of video game magazines</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-navbar"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></td></tr></tbody></table>
<p><b>Game programming</b>, a subset of <a href="Game_development" class="mw-redirect" title="Game development">game development</a>, is the <a href="Software_development" title="Software development">software development</a> of <a href="Video_games" class="mw-redirect" title="Video games">video games</a>. Game programming requires substantial skill in <a href="Software_engineering" title="Software engineering">software engineering</a> and <a href="Computer_programming" title="Computer programming">computer programming</a> in a given <a href="Programming_language" title="Programming language">language</a>, as well as specialization in one or more of the following areas: <a href="Simulation" title="Simulation">simulation</a>, <a href="Computer_graphics" title="Computer graphics">computer graphics</a>, <a href="Artificial_intelligence_(video_games)" class="mw-redirect" title="Artificial intelligence (video games)">artificial intelligence</a>, <a href="Physics" title="Physics">physics</a>, <a href="Audio_programming" class="mw-redirect" title="Audio programming">audio programming</a>, and <a href="Input/output" title="Input/output">input</a>. For <a href="Multiplayer" class="mw-redirect" title="Multiplayer">multiplayer</a> games, knowledge of <a href="Computer_network_programming" title="Computer network programming">network programming</a> is required (the resultant code, in addition to its performance characteristics, is commonly referred to as the game's <a href="Netcode" title="Netcode">netcode</a> by players and programmers alike). In some genres, e.g. <a href="Fighting_games" class="mw-redirect" title="Fighting games">fighting games</a>, advanced network programming is often demanded, as the netcode and its properties (e.g. <a href="Network_latency" class="mw-redirect" title="Network latency">latency</a>) are considered by players and critics to be some of the most important metrics of the game's quality. For <a href="Massively_multiplayer_online_game" title="Massively multiplayer online game">massively multiplayer online games</a> (MMOGs), even further knowledge of <a href="Database_programming" class="mw-redirect" title="Database programming">database programming</a> and advanced networking programming are required. Though often engaged in by professional <a href="Video_game_programmer" title="Video game programmer">game programmers</a>, there is a thriving scene of <a href="Indie_game" title="Indie game">independent</a> developers who lack a relationship with a publishing company.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Development_process">Development process</h2></div>
<p>Professional game development usually begins with a <a href="Game_design" title="Game design">game design</a>, which itself has several possible origins. Occasionally the game development process starts with no clear design in mind, but as a series of experiments. For example, <a href="Game_designer" class="mw-redirect" title="Game designer">game designer</a> <a href="Will_Wright_(game_designer)" title="Will Wright (game designer)">Will Wright</a> began development of <i><a href="The_Sims" title="The Sims">The Sims</a></i> by getting programmers to experiment with several ideas.
</p>
<div class="mw-heading mw-heading3"><h3 id="Prototyping">Prototyping</h3></div>
<p>Programmers are often required to produce <a href="Prototype#Software_release_cycle" title="Prototype">prototypes</a> of gameplay ideas and features. A great deal of prototyping may take place during pre-production, before the design document is complete, and may help determine what features the design specifies.
</p><p><a href="Prototype" title="Prototype">Prototypes</a> are developed quickly with very little time for up-front design and mostly act as a <a href="Proof_of_concept" title="Proof of concept">proof of concept</a> or to test ideas. They are not expected to work flawlessly, but are developed to try out new, sometimes exotic, ideas.
</p>
<div class="mw-heading mw-heading3"><h3 id="Game_design">Game design</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Game_design" title="Game design">Game design</a></div>
<p>Though the programmer's main job is not to develop the game design, the programmers often contribute to the design, as do <a href="Video_game_artist" class="mw-redirect" title="Video game artist">game artists</a>. The game designer will solicit input from both the <a href="Game_producer" class="mw-redirect" title="Game producer">producer</a> and the art and <a href="Lead_programmer" title="Lead programmer">programming lead</a> for ideas and strategies for the game design. Often individuals in non-lead positions also contribute, such as <a href="Copywriter" class="mw-redirect" title="Copywriter">copywriters</a> and other programmers and artists.
</p><p>Programmers often closely follow the <a href="Game_design_document" title="Game design document">game design document</a>. As the game development progresses, the design document changes as programming limitations and new capabilities are discovered and exploited.
</p>
<div class="mw-heading mw-heading3"><h3 id="Production">Production</h3></div>
<p>During production, programmers may create a great deal of <a href="Source_code" title="Source code">source code</a> to create the game described in the game's design document. Along the way, the design document is modified to meet limitations or expanded to exploit new features. The design document is very much a "living document", much of whose life is dictated by programmer's schedules, talent and resourcefulness.
</p><p>While many programmers have some say in a game's content, most <a href="Game_producer" class="mw-redirect" title="Game producer">game producers</a> solicit input from the <a href="Lead_programmer" title="Lead programmer">lead programmer</a> as to the status of a game programming development. The lead is responsible for knowing the status of all facets of the game's programming and for pointing out limitations. The lead programmer may also pass on suggestions from the programmers as to possible features they'd like to implement.
</p><p>With today's visually rich content, the programmer must often interact with the <a href="Video_game_artist" class="mw-redirect" title="Video game artist">art staff</a>. This very much depends on the programmer's role, of course. For example, a <a href="Game_programmer" class="mw-redirect" title="Game programmer">3D graphics programmer</a> may need to work side by side with the game's 3D modelers discussing strategies and design considerations, while an <a href="Game_programmer" class="mw-redirect" title="Game programmer">AI programmer</a> may need to interact very little, if at all, with the art staff. To help artists and level designers with their tasks, programmers may volunteer or be called upon to develop <a href="Game_development_tool" title="Game development tool">tools and utilities</a>.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Many of these may be for a specific purpose and can be <a href="Computer_bug" class="mw-redirect" title="Computer bug">buggy</a> due to time constraints (time for development of such tools is often not included in a game's schedule) as well as because they are only for in-house use anyway. Many game tools are developed in <a href="Rapid_application_development" title="Rapid application development">RAD</a> languages for quicker development and may be discarded after the completion of the game.
</p>
<div class="mw-heading mw-heading3"><h3 id="Testing">Testing</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Game_testing" title="Game testing">Game testing</a></div>
<p>The formal <a href="Quality_assurance" title="Quality assurance">quality assurance</a> testing process, performed by professional <a href="Game_tester" class="mw-redirect" title="Game tester">game testers</a>, begins well into game development. High-budget titles may begin testing with the first playable <a href="Alpha_test" class="mw-redirect" title="Alpha test">alpha</a>, while low-budget and casual games might not enter testing until a <a href="Release_candidate" class="mw-redirect" title="Release candidate">release candidate</a> is ready. The programmers' task is to fix errors and bugs as such are discovered by the QA teams.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Nearing_completion">Nearing completion</h3></div>
<p>Final tasks include "polishing" the game, such as programmers fixing occasional bugs—from minor to catastrophic—that may arise during the last phases of <a href="Game_tester" class="mw-redirect" title="Game tester">testing</a>.
</p><p>Game developers may have a <a href="Beta_test" class="mw-redirect" title="Beta test">beta testing</a> period, but the definition of such varies from developer to developer. Often a beta contains all of the game's features, but may have a few bugs or incomplete content. Few games are given a public beta period, for example, to measure stress tolerance for game <a href="Server_(computing)" title="Server (computing)">servers</a>.
</p><p>When the game is deemed complete, it is said to have "<a href="Release_to_manufacture" class="mw-redirect" title="Release to manufacture">gone gold</a>" and is shipped off to the publisher. Depending on circumstances, the publisher may then subject it to its own quality assurance or may begin pressing the game from the <a href="Golden_master" class="mw-redirect" title="Golden master">gold master</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Maintenance">Maintenance</h3></div>
<p>Once a game ships, the maintenance phase for the video game begins. Programmers wait for a period to get as many bug reports as possible. Once the developer thinks they've obtained enough feedback, the programmers start working on a <a href="Patch_(computing)" title="Patch (computing)">patch</a>. The patch may take weeks or months to develop, but it's intended to fix most bugs and problems with the game. Occasionally a patch may include extra features or content or may even alter gameplay.
</p>
<div class="mw-heading mw-heading3"><h3 id="Duration">Duration</h3></div>
<p>Most modern games take from one to three years to complete. The length of development depends on a number of factors, but programming is required throughout all phases of development except the very early stages of game design.
</p>
<div class="mw-heading mw-heading2"><h2 id="Tools">Tools</h2></div>
<p>Like other software, game development programs are generated from <a href="Source_code" title="Source code">source code</a> to the actual program (called the <i>executable</i>) by a <a href="Compiler" title="Compiler">compiler</a>. Source code can be developed with almost any <a href="Text_editor" title="Text editor">text editor</a>, but many professional game programmers use a full <a href="Integrated_development_environment" title="Integrated development environment">integrated development environment</a>. Once again, which IDE one uses depends on the target platform.
</p><p>In addition to IDEs, many game development companies create <a href="Game_development_tool" title="Game development tool">custom tools</a> developed to be used in-house. Some of these include prototypes and asset conversion tools (programs that change artwork, for example, into the game's custom format). Some custom tools may even be delivered with the game, such as a <a href="Level_editor" title="Level editor">level editor</a>.
</p><p>Game development companies are often very willing to spend thousands of dollars to make sure their programmers are well equipped with the best <a href="Game_programmer" class="mw-redirect" title="Game programmer">tools</a>. A well outfitted programmer may have two to three development systems and multiple monitors dominating their office or cubicle.
</p>
<div class="mw-heading mw-heading3"><h3 id="Programming_languages">Programming languages</h3></div>
<table class="wikitable" style="margin-left:1em; float: right; width: 450px">
<tbody><tr>
<th>Language
</th>
<th>Features
</th></tr>
<tr>
<td><a href="Assembly_language" title="Assembly language">Assembly</a>
</td>
<td>Potentially minimal CPU <a href="Overhead_(computing)" title="Overhead (computing)">overhead</a>
</td></tr>
<tr>
<td><a href="C_(programming_language)" title="C (programming language)">C</a>
</td>
<td>Widely known, widely portable, numerous APIs, compiles to <a href="Machine_code" title="Machine code">machine code</a>
</td></tr>
<tr>
<td><a href="C%2B%2B" title="C++">C++</a>
</td>
<td><a href="Object-oriented_programming" title="Object-oriented programming">Object-oriented</a>, widely known, numerous APIs, compiles to machine code
</td></tr>
<tr>
<td><a href="Java_(programming_language)" title="Java (programming language)">Java</a>
</td>
<td>Object-oriented, <a href="Garbage_collection_(computer_science)" title="Garbage collection (computer science)">garbage-collected</a>, widely portable (via a <a href="Virtual_machine" title="Virtual machine">virtual machine</a>)
</td></tr>
<tr>
<td><a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>, <a href="Visual_Basic_.NET" class="mw-redirect" title="Visual Basic .NET">Visual Basic .NET</a>, etc.
</td>
<td>Object-oriented, garbage-collected, interfaces with <a href="Microsoft" title="Microsoft">Microsoft</a> products
</td></tr>
<tr>
<td><a href="Objective-C" title="Objective-C">Objective-C</a>, <a href="Swift_(programming_language)" title="Swift (programming language)">Swift</a>
</td>
<td>Object-oriented, interfaces with <a href="Apple_Inc." title="Apple Inc.">Apple</a> products
</td></tr>
<tr>
<td><a href="Lua_(programming_language)" class="mw-redirect" title="Lua (programming language)">Lua</a>, <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, <a href="JavaScript" title="JavaScript">JavaScript</a>, <a href="Tcl" title="Tcl">Tcl</a>, etc.
</td>
<td>Familiar syntax, easily embedded in the above languages, often used for <a href="Scripting_language" title="Scripting language">scripting</a>
</td></tr>
<tr>
<td><a href="Lisp_(programming_language)" title="Lisp (programming language)">Lisp</a>, <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>, <a href="Perl" title="Perl">Perl</a>, <a href="Smalltalk" title="Smalltalk">Smalltalk</a>, etc.
</td>
<td>Fringe game languages, although bindings to popular libraries are common
</td></tr></tbody></table>
<p>Once the game's initial design has been agreed upon, the development language must be decided upon. The choice depends upon many factors, such as language familiarity of the programming staff, target platforms, the execution speed requirements and the language of any <a href="Game_engine" title="Game engine">game engines</a>, <a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">APIs</a> or <a href="Library_(computing)" title="Library (computing)">libraries</a> being used.
</p><p>For <a href="Personal_computer" title="Personal computer">personal computers</a>, the language selected may be little more than a matter of preference. <a href="Language_binding" title="Language binding">Language bindings</a> for popular libraries such as <a href="Simple_DirectMedia_Layer" title="Simple DirectMedia Layer">SDL</a> and <a href="Allegro_(software_library)" title="Allegro (software library)">Allegro</a> are widespread,<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> and the performance gap between idiomatic code written in modern <a href="Compiled_language" title="Compiled language">compiled</a> languages is negligible.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> The most popular languages are usually <a href="Procedural_programming" title="Procedural programming">procedural</a> or <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented</a> and implemented via <a href="Compiler" title="Compiler">compilers</a>; for example, <a href="C_(programming_language)" title="C (programming language)">C</a>,<sup id="cite_ref-cprogramming_8-0" class="reference"><a href="#cite_note-cprogramming-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> <a href="C%2B%2B" title="C++">C++</a>,<sup id="cite_ref-cprogramming_8-1" class="reference"><a href="#cite_note-cprogramming-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-satori_9-0" class="reference"><a href="#cite_note-satori-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> and <a href="Java_(programming_language)" title="Java (programming language)">Java</a>.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> However, developers may take into account <a href="Domain_(software_engineering)" title="Domain (software engineering)">domain</a>-specific features, such as interfacing with the operating system, and resilience to <a href="Reverse_engineering" title="Reverse engineering">reverse engineering</a> for online video games.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> Many games are not written in one language exclusively, and may combine two or more languages; For example, <a href="Unity_(game_engine)" title="Unity (game engine)">Unity</a>, a popular game engine, has different pieces written in C, C++, and <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>
</p><p>For <a href="Video_game_console" title="Video game console">consoles</a>, the support of the target platform is usually the most considered factor. In the past, video games for consoles were written almost exclusively in <a href="Assembly_language" title="Assembly language">assembly</a> due to limited resources in terms of both storage and processing speed.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> However, as technology has advanced, so have the options for game development on consoles. <a href="Nintendo" title="Nintendo">Nintendo</a>,<sup id="cite_ref-VB_Unity_interview_14-0" class="reference"><a href="#cite_note-VB_Unity_interview-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> <a href="Microsoft" title="Microsoft">Microsoft</a>, and <a href="Sony_Entertainment" title="Sony Entertainment">Sony</a><sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> all have differing <a href="Software_development_kit" title="Software development kit">SDKs</a> for their <a href="Wii_U" title="Wii U">Wii U</a>, <a href="Nintendo_Switch" title="Nintendo Switch">Nintendo Switch</a>, <a href="Xbox_One" title="Xbox One">Xbox One</a>, and <a href="PlayStation_4" title="PlayStation 4">PlayStation 4</a> consoles, respectively.
</p><p><a href="High-level_programming_language" title="High-level programming language">High-level</a> <a href="Scripting_language" title="Scripting language">scripting languages</a> are increasingly being used as embedded extensions to the underlying game written in a compiled programming language, for the convenience of both the original developer and anyone who would wish to <a href="Mod_(video_gaming)" class="mw-redirect" title="Mod (video gaming)">mod</a> the game. <a href="Lua_programming_language" class="mw-redirect" title="Lua programming language">Lua</a> is a very popular choice, as its API is written in <a href="ANSI_C" title="ANSI C">ANSI C</a> and the language is designed to be embedded into other applications.<sup id="cite_ref-satori_9-1" class="reference"><a href="#cite_note-satori-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> Many developers have created custom languages altogether for their games, such as <a href="Id_Software" title="Id Software">id Software</a>'s <a href="QuakeC" title="QuakeC">QuakeC</a> and <a href="Epic_Games" title="Epic Games">Epic Games</a>' <a href="UnrealScript" class="mw-redirect" title="UnrealScript">UnrealScript</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="APIs_and_libraries">APIs and libraries</h3></div>
<p>A key decision in game programming is which, if any, <a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">APIs</a> and <a href="Library_(computer_science)" class="mw-redirect" title="Library (computer science)">libraries</a> to use. Today, there are numerous libraries available which take care of key tasks of game programming. Some libraries can handle sound processing, input, and <a href="Rendering_(computer_graphics)" title="Rendering (computer graphics)">graphics rendering</a>. Some can even handle some <a href="Artificial_intelligence" title="Artificial intelligence">AI</a> tasks such as <a href="Pathfinding" title="Pathfinding">pathfinding</a>. There are even entire <a href="Game_engine" title="Game engine">game engines</a> that handle most of the tasks of game programming and only require coding game logic.
</p><p>Which APIs and libraries one chooses depends largely on the target platform. For example, libraries for <a href="PlayStation_2" title="PlayStation 2">PlayStation 2</a> development may not be available for <a href="Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a> and vice versa. However, there are game frameworks available that allow or ease cross-platform development, so programmers can program a game in a single language and have the game run on several platforms, such as the <a href="Wii" title="Wii">Wii</a>, PlayStation 3, <a href="Xbox_360" title="Xbox 360">Xbox 360</a>, <a href="PlayStation_Portable" title="PlayStation Portable">PSP</a> and Microsoft Windows.
</p>
<div class="mw-heading mw-heading4"><h4 id="Graphic_APIs">Graphic APIs</h4></div>
<table class="wikitable" style="margin-left:1em; float: right; width: 450px">
<caption>Graphics API usage across Operating Systems:
</caption>
<tbody><tr>
<th>OS
</th>
<th><a href="Vulkan_(API)" class="mw-redirect" title="Vulkan (API)">Vulkan</a>
</th>
<th><a href="DirectX" title="DirectX">Direct X</a>
</th>
<th>GNMX
</th>
<th><a href="Metal_(API)" title="Metal (API)">Metal</a>
</th></tr>
<tr>
<th>Windows 10
</th>
<td>yes
</td>
<td>yes
</td>
<td>no
</td>
<td>no
</td></tr>
<tr>
<th>Mac
</th>
<td><a href="MoltenVK" title="MoltenVK">MoltenVK</a>
</td>
<td>no
</td>
<td>no
</td>
<td>yes
</td></tr>
<tr>
<th>Linux
</th>
<td>yes
</td>
<td>no
</td>
<td>no
</td>
<td>no
</td></tr>
<tr>
<th>Android
</th>
<td>yes
</td>
<td>yes
</td>
<td>yes
</td>
<td>no
</td></tr>
<tr>
<th>iOS
</th>
<td><a href="MoltenVK" title="MoltenVK">MoltenVK</a>
</td>
<td>yes
</td>
<td>yes
</td>
<td>yes
</td></tr>
<tr>
<th>Tizen
</th>
<td>in Dev
</td>
<td>no
</td>
<td>no
</td>
<td>no
</td></tr>
<tr>
<th>Sailfish
</th>
<td>in Dev
</td>
<td>no
</td>
<td>no
</td>
<td>no
</td></tr>
<tr>
<th>Xbox One
</th>
<td>no
</td>
<td>yes
</td>
<td>no
</td>
<td>no
</td></tr>
<tr>
<th><a href="PlayStation_4_system_software" title="PlayStation 4 system software">Orbis OS</a> (PS4)
</th>
<td>no
</td>
<td>no
</td>
<td>yes
</td>
<td>no
</td></tr>
<tr>
<th>Nintendo Switch
</th>
<td>yes
</td>
<td>no
</td>
<td>no
</td>
<td>no
</td></tr></tbody></table>
<p>Today, graphics are a key defining feature of most games. While <a href="2D_computer_graphics" title="2D computer graphics">2D graphics</a> used to be the norm for games released through the mid-1990s, most <a href="AAA_(video_game_industry)" title="AAA (video game industry)">AAA games</a> now boast full <a href="3D_computer_graphics" title="3D computer graphics">3D graphics</a>, even for games which are largely 2D in nature, such as <i><a href="Civilization_III" title="Civilization III">Civilization III</a></i>. However, purely 2D graphics have experienced a Renaissance with <a href="Indie_game" title="Indie game">indie games</a>.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>
</p><p>A well established <a href="Personal_computer" title="Personal computer">personal computer</a> platform is Microsoft Windows. Since it came pre-installed on almost ninety percent of <a href="IBM_PC_compatible" title="IBM PC compatible">PCs</a> sold, it now has the largest user base. The two most popular 3D graphics APIs for Microsoft Windows are <a href="Direct3D" title="Direct3D">Direct3D</a> and <a href="OpenGL" title="OpenGL">OpenGL</a>. The benefits and weaknesses of each API are hotly debated among Windows <a href="Game_programmer" class="mw-redirect" title="Game programmer">game programmers</a>.
</p><p>Currently, the most popular <a href="Computing_platform" title="Computing platform">Computing platform</a> is Google Android. Since it comes pre-installed on almost eighty percent of <a href="Smartphones" class="mw-redirect" title="Smartphones">Smartphones</a> sold, Android has the second largest user base, and increasing. Android uses <a href="OpenGL_ES" title="OpenGL ES">OpenGL ES</a> & <a href="Vulkan_(API)" class="mw-redirect" title="Vulkan (API)">Vulkan (API)</a>.
</p><p>DirectX is a collection of game APIs. <a href="Direct3D" title="Direct3D">Direct3D</a> is DirectX's 3D API. Direct3D is freely available from <a href="Microsoft" title="Microsoft">Microsoft</a>, as are the rest of the <a href="DirectX" title="DirectX">DirectX APIs</a>. Microsoft developed <a href="DirectX" title="DirectX">DirectX</a> for game programmers and continues to add features to the API. The DirectX specification is not controlled by an open arbitration committee and Microsoft is free to add, remove or change features. Direct3D is not portable; it is designed specifically for <a href="Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a> and no other platform (though a form of Direct3D is used on Microsoft's <a href="Xbox_(console)" title="Xbox (console)">Xbox</a>, Windows Phone 7.5 smartphones and mobile devices which run the <a href="Pocket_PC" title="Pocket PC">Pocket PC</a> operating system).
</p><p>OpenGL is a portable API specification. Code written with OpenGL is easily ported between platforms with a compatible implementation. For example, <i><a href="Quake_II" title="Quake II">Quake II</a></i>, which uses OpenGL, was ported from Windows to Linux by a fan of the game. OpenGL is a standard maintained by the OpenGL Architecture Review Board (ARB). The ARB meets periodically to update the standard by adding emerging support for features of the latest 3D hardware. In addition, the development tools provided by the manufacturers of some video game consoles (such as the Nintendo GameCube, the Nintendo DS, and the PSP) use graphic APIs that resemble OpenGL. OpenGL often lags behind on feature updates due to the lack of a permanent development team and the requirement that implementations begin development after the standard has been published. Programmers who choose to use it can access some hardware's latest 3D features, but only through non-standardized extensions. The situation may change in the future as the OpenGL architecture review board (ARB) has passed control of the specification to the <a href="Khronos_Group" title="Khronos Group">Khronos Group</a> in an attempt to counter the problem.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading4"><h4 id="Other_APIs">Other APIs</h4></div>
<p>For development on Microsoft Windows, the various APIs of DirectX may be used for input, <a href="Sound_effects" class="mw-redirect" title="Sound effects">sound effects</a>, music, <a href="Computer_network" title="Computer network">networking</a> and the playback of videos. Many commercial libraries are available to accomplish these tasks, but since DirectX is available for free, it is the most widely used.
</p><p>For console programming, the <a href="Console_manufacturer" class="mw-redirect" title="Console manufacturer">console manufacturers</a> provide facilities for rendering graphics and the other tasks of game development. The console manufacturers also provide complete development systems, without which one cannot legally market nor develop games for their system. Third-party developers also sell toolkits or libraries that ease the development on one or more of these tasks or provide special benefits, such as cross-platform development capabilities.
</p>
<div class="mw-heading mw-heading2"><h2 id="Game_structure">Game structure</h2></div>
<p>The central component of any game, from a programming standpoint, is the <i>game loop</i>. The game loop allows the game to run smoothly regardless of a user's input or lack thereof.
</p><p>Most traditional software programs respond to user input and do nothing without it. For example, a <a href="Word_processor" title="Word processor">word processor</a> formats words and text as a user types. If the user doesn't type anything, the word processor does nothing. Some functions may take a long time to complete, but all are initiated by a user telling the program to do something.
</p><p>Games, on the other hand, must continue to operate <i>regardless</i> of a user's input. The game loop allows this. A highly simplified game loop, in <a href="Pseudocode" title="Pseudocode">pseudocode</a>, might look something like this :
</p>
<pre><b>while</b> (user does not exit)
check for user input
run AI
move enemies
resolve collisions
draw graphics
play sounds
<b>end while</b>
</pre>
<p>The loop may be refined and modified as game development progresses, but most games are based on this basic idea.<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>
</p><p>Game loops differ depending on the platform they are developed for. For example, games written for <a href="MS-DOS" title="MS-DOS">DOS</a> and many consoles can dominate and exploit available processing resources without restraint. However, games for a modern PC operating system such as Microsoft Windows must operate within the constraints of the process scheduler. Some modern games run multiple <a href="Thread_(computing)" title="Thread (computing)">threads</a> so that, for example, the computation of character AI can be <a href="Coupling_(computer_programming)" title="Coupling (computer programming)">decoupled</a> from the generation of smooth motion within the game. This has the disadvantage of (slightly) increased overhead, but the game may run more smoothly and efficiently on <a href="Hyper-threading" title="Hyper-threading">hyper-threading</a> or <a href="Multi-core_(computing)" class="mw-redirect" title="Multi-core (computing)">multicore</a> processors and on multiprocessor platforms. With the computer industry's focus on <a href="CPU" class="mw-redirect" title="CPU">CPUs</a> with more cores that can execute more threads, this is becoming increasingly important. Consoles like the <a href="Xbox_360" title="Xbox 360">Xbox 360</a> and <a href="PlayStation_3" title="PlayStation 3">PlayStation 3</a> already have more than one core per processor, and execute more than one thread per core.
</p>
<div class="mw-heading mw-heading2"><h2 id="Hobbyists">Hobbyists</h2></div>
<p>The only platforms widely available for hobbyists to program are consumer <a href="Operating_system" title="Operating system">operating systems</a>, such as Android, iOS, Windows, Mac, Linux, etc. This is because development on game consoles requires special development systems that cost thousands of dollars. Often these must be obtained from the console manufacturer and are only sold or leased to professional game development studios. However, Microsoft used to distribute a game development framework, <a href="Microsoft_XNA" title="Microsoft XNA">XNA</a>, which runs on both Microsoft Windows and Xbox 360. XNA was discontinued, but other projects like <a href="MonoGame" title="MonoGame">MonoGame</a> and SharpDX are trying to allow the same access for game coding. Lately, Android is the most popular hobbyist platform of choice for mobile developers.<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> Some hobbyists also develop <a href="Homebrew_(video_games)" title="Homebrew (video games)">homebrew games</a>, especially for handheld systems or <a href="Modchip" title="Modchip">modded</a> consoles.
</p><p>Some <a href="Software_engineer" class="mw-redirect" title="Software engineer">software engineering</a> students program games as exercises for learning a <a href="Programming_language" title="Programming language">programming language</a> or <a href="Operating_system" title="Operating system">operating system</a>.
</p><p>Some hobbyists may use software packages that help with game development, such as <a href="Adobe_Animate" title="Adobe Animate">Adobe Animate</a>, <a href="Unity_(game_engine)" title="Unity (game engine)">Unity</a>, <a href="Android_Studio" title="Android Studio">Android Studio</a>, <a href="Pygame" title="Pygame">pygame</a>, <a href="Adventure_Game_Studio" title="Adventure Game Studio">Adventure Game Studio</a>, <a href="Roblox" title="Roblox">Roblox Studio</a>, <a href="GameMaker_Studio" class="mw-redirect" title="GameMaker Studio">GameMaker Studio</a>, <a href="Godot_(game_engine)" title="Godot (game engine)">Godot</a>, <a href="Unreal_Engine" title="Unreal Engine">Unreal Engine</a>, <a href="Pixel_Game_Maker_MV" title="Pixel Game Maker MV">Pixel Game Maker MV</a>, or <a href="Construct_(game_engine)" title="Construct (game engine)">Construct</a>.
</p><p><br>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1266661725">
/* start https://en.wikipedia.org/ */
.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}
/* end https://en.wikipedia.org/ */
</style>
<ul><li><a href="List_of_gaming_topics" class="mw-redirect" title="List of gaming topics">List of gaming topics</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFBouknight1970" class="citation journal cs1">Bouknight, W. Jack (September 1970). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F362736.362739">"A procedure for generation of three-dimensional half-toned computer graphics presentations"</a>. <i>Communications of the ACM</i>. <b>13</b> (9): <span class="nowrap">527–</span>536. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F362736.362739">10.1145/362736.362739</a></span>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0001-0782">0001-0782</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:15941472">15941472</a>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFMillington2019" class="citation book cs1">Millington, Ian (2019-03-18). <a rel="nofollow" class="external text" href="https://dx.doi.org/10.1201/9781351053303"><i>AI for Games</i></a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1201%2F9781351053303">10.1201/9781351053303</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781351053303</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:186504701">186504701</a>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite id="CITEREFSchubotz2016" class="citation web cs1">Schubotz, Moritz (2016-12-12). <a rel="nofollow" class="external text" href="https://www.datasakura.com/works-games">"Cogex: A logic prover for question answering"</a>. <i>Datasakura</i>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.libsdl.org/languages.php">"SDL Language Bindings"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2015-11-08</span></span>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://liballeg.org/bindings.html">"Allegro - Language bindings"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2015-11-08</span></span>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite id="CITEREFCorlan2003" class="citation web cs1">Corlan, Alexandru-Dan (2003). <a rel="nofollow" class="external text" href="http://dan.corlan.net/bench.html">"Programming language benchmarks"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2015-11-08</span></span>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite id="CITEREFCorlan2011" class="citation web cs1">Corlan, Alexandru-Dan (2011-06-11). <a rel="nofollow" class="external text" href="https://attractivechaos.github.io/plb/">"Programming Languages Benchmarks"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2015-11-08</span></span>.</cite></span>
</li>
<li id="cite_note-cprogramming-8"><span class="mw-cite-backlink">^ <a href="#cite_ref-cprogramming_8-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-cprogramming_8-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFCorlan2011" class="citation web cs1">Corlan, Alexandru-Dan (2011). <a rel="nofollow" class="external text" href="http://www.cprogramming.com/game-programming.html">"Game Programming in C and C++"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2015-11-08</span></span>.</cite></span>
</li>
<li id="cite_note-satori-9"><span class="mw-cite-backlink">^ <a href="#cite_ref-satori_9-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-satori_9-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFDeLoura2009" class="citation web cs1">DeLoura, Mark (2009-03-05). <a rel="nofollow" class="external text" href="http://www.satori.org/2009/03/the-engine-survey-general-results/">"The Engine Survey: General results"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2015-11-08</span></span>.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite id="CITEREFCorlan" class="citation web cs1">Corlan, Alexandru-Dan. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20151110034437/http://legacy.lwjgl.org/projects.php">"LWJGL - Projects"</a>. Archived from <a rel="nofollow" class="external text" href="http://legacy.lwjgl.org/projects.php">the original</a> on 2015-11-10<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-11-08</span></span>.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite id="CITEREF'No_Bugs'_Hare2015" class="citation web cs1">'No Bugs' Hare (30 November 2015). <a rel="nofollow" class="external text" href="http://ithare.com/chapter-vb-modular-architecture-client-side-programming-languages-for-games-including-resilience-to-reverse-engineering-and-portability/">"Chapter V(b) from "Development&Deployment of MMOG""</a>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite id="CITEREFCorlan2011" class="citation web cs1">Corlan, Alexandru (2011). <a rel="nofollow" class="external text" href="https://www.datasakura.com/">"Game Programming in C and C++"</a>. <i>Datasakura</i>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><cite id="CITEREFHyde1985" class="citation book cs1">Hyde, Randy (1985). <i>Using 6502 Assembly Language</i>.</cite></span>
</li>
<li id="cite_note-VB_Unity_interview-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-VB_Unity_interview_14-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFHelgason2012" class="citation interview cs1">Helgason, David (November 2, 2012). <a rel="nofollow" class="external text" href="https://venturebeat.com/2012/11/02/game-developers-start-your-unity-3d-engines-interview/">"Game developers, start your Unity 3D engines"</a>. <i>GamesBeat</i> (Interview). Interviewed by Dean Takahashi. <a href="VentureBeat" title="VentureBeat">VentureBeat</a><span class="reference-accessdate">. Retrieved <span class="nowrap">July 13,</span> 2014</span>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.phoronix.com/scan.php?page=news_item&px=MTU1MTY">"[Phoronix] Why Sony Is Using LLVM/Clang On The PlayStation 4"</a>. Phoronix.com<span class="reference-accessdate">. Retrieved <span class="nowrap">17 November</span> 2014</span>.</cite></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><cite id="CITEREFCorlan2015" class="citation web cs1">Corlan, Alexandru-Dan (2015-03-24). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190724041205/http://www.lua.org/uses.html">"Lua: Uses"</a>. Archived from <a rel="nofollow" class="external text" href="http://www.lua.org/uses.html">the original</a> on 2019-07-24<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-11-08</span></span>.</cite></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://rampantgames.com/blog/?p=5934">"Why Are Most Indie Games 2D Instead of 3D?"</a>. Rampant Games. 2013-05-16<span class="reference-accessdate">. Retrieved <span class="nowrap">2017-01-01</span></span>.</cite></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080503182855/http://www.khronos.org/news/press/releases/opengl_arb_to_pass_control_of_opengl_specification_to_khronos_group/">"Khronos Places OpenGL and OpenGL ES Conformance Tests into Open Source"</a>. Khronos Group Press Release. Archived from <a rel="nofollow" class="external text" href="http://www.khronos.org/news/press/releases/opengl_arb_to_pass_control_of_opengl_specification_to_khronos_group/">the original</a> on 2008-05-03.</cite></span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><cite id="CITEREFStutz2001" class="citation book cs1">Stutz, Michael (2001). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/programminglinux0000loki"><i>Programming Linux Games, Chapter 1</i></a></span>. Linux Journal Press. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>1-886411-48-4</bdi>.</cite></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://arc.applause.com/2016/08/29/mobile-developers-android-vs-ios/">"Report: 79% Of Mobile Developers Prefer To Build For Android"</a>. 29 August 2016.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.gamedev.net/">GameDev.net</a>, a leading resource for game development</li>
<li><a rel="nofollow" class="external text" href="http://www.igda.org/">International Game Developers Association (IGDA)</a></li>
<li><a rel="nofollow" class="external text" href="http://web.mit.edu/professional/short-programs/courses/game_development_for_software_engineers.html">Game Development for Software Engineers</a>, a short 5 day short course offered by MIT with guidance from the mentors of the award-winning MIT Game Lab.</li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20090303040643/http://www.konaearth.com/Life/2006/060430/">One ex-game programmer's experience in the game development industry</a></li>
<li><a rel="nofollow" class="external text" href="http://www.sloperama.com/advice/lesson15.htm">Game industry veteran Tom Sloper's advice on game programming</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Wikis">Wikis</h3></div>
<ul><li><a rel="nofollow" class="external text" href="http://gamedesign.wikidot.com/">2D Game Development wiki</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20100107180938/http://wiki.gamedev.net/index.php/Main_Page">Game Development Wiki -GDwiki</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox authority-control" aria-labelledby="Authority_control_databases_frameless&#124;text-top&#124;10px&#124;alt=Edit_this_at_Wikidata&#124;link=https&#58;//www.wikidata.org/wiki/Q1753830#identifiers&#124;class=noprint&#124;Edit_this_at_Wikidata645" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Authority_control_databases_frameless&#124;text-top&#124;10px&#124;alt=Edit_this_at_Wikidata&#124;link=https&#58;//www.wikidata.org/wiki/Q1753830#identifiers&#124;class=noprint&#124;Edit_this_at_Wikidata645" style="font-size:114%;margin:0 4em">Authority control databases </div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">National</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://id.loc.gov/authorities/sh95003476">United States</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://www.nli.org.il/en/authorities/987007544461005171">Israel</a></span></li></ul></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://lux.collections.yale.edu/view/concept/dcdf3ba5-2882-4b87-943f-2f22a93dea2a">Yale LUX</a></span></li></ul></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-05-07" href="https://en.wikipedia.org/wiki/?title=Video_game_programming&oldid=1289263222">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>